package com.ruoyi.safe.mapper;

import com.ruoyi.safe.common.ItemValue;
import com.ruoyi.safe.domain.BizSafeDocAttach;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 安全资料文件Mapper接口
 *
 * @author ruoyi
 * @date 2023-12-15
 */
@Mapper
public interface BizSafeDocAttachMapper {
    /**
     * 查询安全资料文件
     *
     * @param id 安全资料文件主键
     * @return 安全资料文件
     */
    BizSafeDocAttach selectBizSafeDocAttachById(Long id);

    /**
     * 查询安全资料文件列表
     *
     * @param bizSafeDocAttach 安全资料文件
     * @return 安全资料文件集合
     */
    List<BizSafeDocAttach> selectBizSafeDocAttachList(BizSafeDocAttach bizSafeDocAttach);

    /**
     * 查询资料文件列表
     *
     * @param fileDocAttach 资料文件
     * @return 资料文件集合
     */
    List<BizSafeDocAttach> selectFileDocAttachListIds(BizSafeDocAttach fileDocAttach);

    /**
     * 新增安全资料文件
     *
     * @param bizSafeDocAttach 安全资料文件
     * @return 结果
     */
    int insertBizSafeDocAttach(BizSafeDocAttach bizSafeDocAttach);

    /**
     * 修改安全资料文件
     *
     * @param bizSafeDocAttach 安全资料文件
     * @return 结果
     */
    int updateBizSafeDocAttach(BizSafeDocAttach bizSafeDocAttach);

    /**
     * 删除安全资料文件
     *
     * @param id 安全资料文件主键
     * @return 结果
     */
    int deleteBizSafeDocAttachById(Long id);

    /**
     * 批量删除安全资料文件
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteBizSafeDocAttachByIds(Long[] ids);

    /**
     * 根据文件名集合查询安全资料文件
     *
     * @param fileNames 需要删除的数据主键集合
     * @return 结果
     */
    List<BizSafeDocAttach> selectBizSafeDocAttachByFileNames(String[] fileNames);

    /**
     * 根据模版id查询文件列表
     * @param cataLogDetailId
     * @return
     */
    List<BizSafeDocAttach> selectListByDetailId(Long cataLogDetailId);

    /**
     * 删除附件雨目录的关联关系
     * @param ids
     * @return
     */
    int deleteBizSafeDocAttachRelationByIds(Long[] ids);

    /**
     * 根据目录详情ID删除与附件的关联关系
     * @param catalogDetailId
     * @return
     */
    int deleteBizSafeDocAttachRelationByDetailId(Long catalogDetailId);

    /**
     * 设置附件与目录详情的关联关系
     * @param catalogDetailId
     * @param ids
     * @return
     */
    int setDetailIdByIds(@Param("catalogDetailId") Long catalogDetailId,@Param("ids") Long[] ids);

    /**
     * 根据detailIds分组统计已上传的资料的数量
     * @param detailIds
     * @return
     */
    List<ItemValue> groupBizSafeDocAttachByDetailIds(@Param("detailIds") List<Long> detailIds);

    List<BizSafeDocAttach> selectBizSafeDocAttachByIds(@Param("ids") Set<Long> bizIds);
}
